Hybrid unicast/anycast content distribution network system

ABSTRACT

A method includes receiving a request for an edge cache address, and comparing a requester address to an anycast group. The method can further include providing an anycast edge cache address when the requestor address is in the anycast group. Alternatively, the method can further include determining an optimal cache server, and providing a unicast address of the optimal cache server when the requester address is not in the anycast group.

FIELD OF THE DISCLOSURE

The present disclosure generally relates to communications networks, andmore particularly relates to a hybrid unicast/anycast contentdistribution network.

BACKGROUND

Packet-switched networks, such as networks based on the TCP/IP protocolsuite, can distribute a rich array of digital content to a variety ofclient applications. One popular application is a personal computerbrowser for retrieving documents over the Internet written in theHypertext Markup Language (HTML). Frequently, these documents includeembedded content. Where once the digital content consisted primarily oftext and static images, digital content has grown to include audio andvideo content as well as dynamic content customized for an individualuser.

It is often advantageous when distributing digital content across apacket-switched network to divide the duty of answering content requestsamong a plurality of geographically dispersed servers. For example,popular Web sites on the Internet often provide links to “mirror” sitesthat replicate original content at a number of geographically dispersedlocations. A more recent alternative to mirroring is contentdistribution networks (CDNs) that dynamically redirect content requeststo a cache server situated closer to the client issuing the request.CDNs either co-locate cache servers within Internet Service Providers ordeploy them within their own separate networks.

BRIEF DESCRIPTION OF THE DRAWINGS

It will be appreciated that for simplicity and clarity of illustration,elements illustrated in the Figures have not necessarily been drawn toscale. For example, the dimensions of some of the elements areexaggerated relative to other elements. Embodiments incorporatingteachings of the present disclosure are shown and described with respectto the drawings presented herein, in which:

FIG. 1 is a diagram illustrating a communications network in accordancewith one embodiment of the present disclosure;

FIG. 2 is block diagram illustrating an anycast CDN system in accordancewith one embodiment of the present disclosure;

FIG. 3 is a flow diagram illustrating a method of providing an InternetProtocol (IP) address in accordance with one embodiment of the presentdisclosure; and

FIG. 4 is an illustrative embodiment of a general computer system.

The use of the same reference symbols in different drawings indicatessimilar or identical items.

DETAILED DESCRIPTION OF THE DRAWINGS

The numerous innovative teachings of the present application will bedescribed with particular reference to the presently preferred exemplaryembodiments. However, it should be understood that this class ofembodiments provides only a few examples of the many advantageous usesof the innovative teachings herein. In general, statements made in thespecification of the present application do not necessarily limit any ofthe various claimed inventions. Moreover, some statements may apply tosome inventive features but not to others.

FIG. 1 shows a geographically dispersed network 100, such as theInternet. Network 100 can include routers 102, 104, and 106 thatcommunicate with each other and form an autonomous system (AS) 108. AS108 can connect to other ASs that form network 100 through peeringpoints at routers 102 and 104. Additionally, AS 108 can include clientsystems 110, 112, 114, and 116 connected to respective routers 102, 104,and 106 to access the network 100. Router 102 can provide ingress andegress for client system 110. Similarly, router 104 can provide ingressand egress for client system 112. Router 106 can provide ingress andegress for both of client systems 114 and 116.

AS 108 can further include a Domain Name System (DNS) server 118. DNSserver 118 can translate a human readable hostname, such as www.att.com,into an Internet Protocol (IP) address. For example, client system 110can send a request to resolve a hostname to DNS server 118. DNS server118 can provide client system 110 with an IP address corresponding tothe hostname. DNS server 118 may provide the IP address from a cache ofhostname-IP address pairs or may request the IP address corresponding tothe hostname from an authoritative DNS server for the domain to whichthe hostname belongs.

Client systems 110, 112, 114, and 116 can retrieve information from aserver 120. For example, client system 112 can retrieve a web pageprovided by server 120. Additionally, client system 112 may downloadcontent files, such as graphics, audio, and video content, and programfiles such as software updates, from server 120. The time required forclient system 112 to retrieve the information from the server 120normally is related to the size of the file, the distance theinformation travels, and congestion along the route. Additionally, theload on the server 120 is related to the number of client systems 110,112, 114, and 116 that are actively retrieving information from theserver 120. As such, the resources such as processor, memory, andbandwidth available to the server 120 limit the number of client systems110, 112, 114, and 116 that can simultaneously retrieve information fromthe server 120.

Additionally, the network can include cache servers 122 and 124 thatreplicate content on the server 120 and that can be located more closelywithin the network to the client systems 110, 112, 114, and 116. Cacheserver 122 can link to router 102, and cache server 124 can link torouter 106. Client systems 110, 112, 114, and 116 can be assigned cacheserver 122 or 124 to decrease the time needed to retrieve information,such as by selecting the cache server closer to the particular clientsystem. The network distance between a cache server and client systemcan be determined by network cost and access time. As such, theeffective network distance between the cache server and the clientsystem may be different from the geographic distance.

When assigning cache servers 122 and 124 to client systems 110 through116, the cache server closest to the client can be selected. The closestcache server may be the cache server having a shortest network distance,a lowest network cost, a lowest network latency, a highest linkcapacity, or any combination thereof. Client system 110 can be assignedcache server 122, and client systems 114 and 116 can be assigned tocache server 124. The network costs of assigning client system 112 toeither of cache server 122 or 124 may be substantially identical. Whenthe network costs associated with the link between router 102 and router104 are marginally lower than the network costs associated with the linkbetween router 104 and router 106, client 112 may be assigned to cacheserver 124.

Client system 112 may send a request for information to cache server124. If cache server 124 has the information stored in a cache, it canprovide the information to client system 112. This can decrease thedistance the information travels and reduce the time to retrieve theinformation. Alternatively, when cache server 124 does not have theinformation, it can retrieve the information from server 120 prior toproviding the information to the client system 112. In an embodiment,cache server 124 may attempt to retrieve the information from cacheserver 122 prior to retrieving the information from server 120. Thecache server 124 may retrieve the information from the server 120 onlyonce, reducing the load on server 120 and network 100 such as, forexample, when client system 114 requests the same information.

Cache server 124 can have a cache of a limited size. The addition of newcontent to the cache may require old content to be removed from thecache. The cache may utilize a least recently used (LRU) policy, a leastfrequently used (LFU) policy, or another cache policy known in the art.When the addition of relatively cold or less popular content to thecache causes relatively hot or more popular content to be removed fromthe cache, an additional request for the relatively hot content canincrease the time required to provide the relatively hot content to theclient system, such as client system 114. To maximize the cost and timesavings of providing content from the cache, the most popular contentmay be stored in the cache, while less popular content is retrieved fromserver 120.

FIG. 2 illustrates an anycast CDN system 200 that can be used inconjunction with communications network 100. The anycast CDN system 200can include a CDN provider network 202. The CDN provider network 202 caninclude a plurality of provider edge routers 204 through 214. Theprovider edge routers 204 through 214 can serve as ingress points fortraffic destined for the CDN provider network 202, and egress points fortraffic from the CDN provider network 202 destined for the rest of theInternet. The anycast CDN system 200 can further include cache servers216 and 218. Cache server 216 can receive traffic from the CDN providernetwork 202 through provider edge router 204, and cache server 218 canreceive traffic from the CDN provider network 202 through edge cacherouter 214. In addition to providing CDN service to clients within theCDN provider network, the anycast CDN system 200 can provide CDN serviceto clients within AS 220 and AS 222. AS 220 can include provider edgerouters 224 and 226 with peering connections to provider edge routers206 and 208, respectively. Similarly, AS 222 can include provider edgerouters 228 and 230 with peering connections to provider edge routers210 and 212 respectively. Requests for content from systems withineither AS 220 or AS 222 may enter the CDN provider network through theappropriate peering points and be directed to either cache server 216 or218.

Anycast CDN system 200 can also include a route controller 232. Theroute controller 232 can exchange routes with provider edge routers 206through 212 within the CDN provider network 202. As such, the routecontroller 232 can influence the routes selected by the provider edgerouters 206 through 212. Additionally, the route controller 232 canreceive load information from cache servers 216 and 218.

Cache servers 216 and 218 can advertise, such as through Border GatewayProtocol (BGP), a shared anycast address to the CDN provider network202, specifically to provider edge routers 204 and 214. Provider edgerouters 204 and 214 can advertise the anycast address to the routecontroller 232. The route controller 232 can provide a route to theanycast address to each of the provider edge routers 206 though 212.Provider edge routers 206 through 212 can direct traffic addressed tothe anycast address to either of the cache servers 216 and 218 based onthe routes provided by the route controller 232. Additionally, theprovider edge routers 206 through 212 can advertise the anycast addressto AS 220 and AS 222. The route controller 232 can manipulate the routeprovided to provider edge routers 206 through 212 based on the load onthe cache servers 216 and 218, network bandwidth, network cost, networkdistance, or any combination thereof. Altering the route to the anycastaddress can change which of cache servers 216 and 218 serve content toclient systems within the CDN provider network 202, AS 220, and AS 222.

In an embodiment, AS 220 may be an unstable network. Traffic from clientsystems within the AS 220 may enter the CDN provider network 202 at bothprovider edge routers 206 and 208. When anycast traffic from the sameclient system enters the CDN provider network 202 at both provider edgerouters 206 and 208, portions of the traffic may be directed todifferent cache servers 216 and 218. Persistent and/or secureconnections may be disrupted when portions of the traffic are sent todifferent cache servers 216 and 218. As such, it is undesirable toprovide an anycast addresses to client systems within an unstablenetwork.

FIG. 3 illustrates an exemplary method of providing an IP address inresponse to a DNS hostname resolution request. At 302, a system canreceive a request, such as at DNS server 118, for an IP address from arequester, such as client system 114. At 304, the system can determinethe IP address of the requester, such as the source IP of the request.At 306, the system can compare the IP address of the requestor to ananycast IP address group. The anycast IP address group can include IPaddresses belonging to a network controlled by the CDN provider.Additionally, the anycast IP address group can include IP addressesbelonging to a stable network. Substantially all traffic from an IPaddress within a stable network can enter the CDN provider network atthe same provider edge router over an extended period of time.Additionally, a stable network may be a network with which the CDNprovider has an existing peering relationship regulating how trafficenters the CDN provider network. In contrast, traffic from an IP addresswithin an unstable network can enter the CDN provider network atmultiple provider edge routers.

At 308, the system can determine if the requestor is a member of theanycast group. When the requestor is in the anycast group, the systemcan provide an anycast address associated with the cache servers to therequester, as illustrated at 310. Requests sent to the anycast addresscan be directed to one of the cache servers based on the routing ruleswithin the CDN provider network.

Alternatively, when the requester is not a member of the anycast group,the system can determine an optimal cache server for the requester, asillustrated at 312. The system may utilize the IP address of therequester, as well as network topology information to determine theoptimal edge cache router. Factors used for the selection of the optimalcache server can include network distance, network cost, availablebandwidth, available server capacity, or any combination thereof. At314, the system can provide the client system with a unicast address forthe optimal cache server. Requests sent to the unicast address can bedirected to the optimal cache server.

FIG. 4 shows an illustrative embodiment of a general computer system400. The computer system 400 can include a set of instructions that canbe executed to cause the computer system to perform any one or more ofthe methods or computer based functions disclosed herein. The computersystem 400 may operate as a standalone device or may be connected, suchas by using a network, to other computer systems or peripheral devices.

In a networked deployment, the computer system may operate in thecapacity of a server or as a client user computer in a server-clientuser network environment, or as a peer computer system in a peer-to-peer(or distributed) network environment. The computer system 400 can alsobe implemented as or incorporated into various devices, such as apersonal computer (PC), a tablet PC, an STB, a personal digitalassistant (PDA), a mobile device, a palmtop computer, a laptop computer,a desktop computer, a communications device, a wireless telephone, aland-line telephone, a control system, a camera, a scanner, a facsimilemachine, a printer, a pager, a personal trusted device, a web appliance,a network router, switch or bridge, or any other machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. In a particular embodiment, thecomputer system 400 can be implemented using electronic devices thatprovide voice, video or data communication. Further, while a singlecomputer system 400 is illustrated, the term “system” shall also betaken to include any collection of systems or sub-systems thatindividually or jointly execute a set, or multiple sets, of instructionsto perform one or more computer functions.

The computer system 400 may include a processor 402, such as a centralprocessing unit (CPU), a graphics processing unit (GPU), or both.Moreover, the computer system 400 can include a main memory 404 and astatic memory 406 that can communicate with each other via a bus 408. Asshown, the computer system 400 may further include a video display unit410 such as a liquid crystal display (LCD), an organic light emittingdiode (OLED), a flat panel display, a solid-state display, or a cathoderay tube (CRT). Additionally, the computer system 400 may include aninput device 412 such as a keyboard, and a cursor control device 414such as a mouse. Alternatively, input device 412 and cursor controldevice 414 can be combined in a touchpad or touch sensitive screen. Thecomputer system 400 can also include a disk drive unit 416, a signalgeneration device 418 such as a speaker or remote control, and a networkinterface device 420 to communicate with a network 426. In a particularembodiment, the disk drive unit 416 may include a computer-readablemedium 422 in which one or more sets of instructions 424, such assoftware, can be embedded. Further, the instructions 424 may embody oneor more of the methods or logic as described herein. In a particularembodiment, the instructions 424 may reside completely, or at leastpartially, within the main memory 404, the static memory 406, and/orwithin the processor 402 during execution by the computer system 400.The main memory 404 and the processor 402 also may includecomputer-readable media.

The illustrations of the embodiments described herein are intended toprovide a general understanding of the structure of the variousembodiments. The illustrations are not intended to serve as a completedescription of all of the elements and features of apparatus and systemsthat utilize the structures or methods described herein. Many otherembodiments may be apparent to those of skill in the art upon reviewingthe disclosure. Other embodiments may be utilized and derived from thedisclosure, such that structural and logical substitutions and changesmay be made without departing from the scope of the disclosure.Additionally, the illustrations are merely representational and may notbe drawn to scale. Certain proportions within the illustrations may beexaggerated, while other proportions may be minimized. Accordingly, thedisclosure and the FIGs. are to be regarded as illustrative rather thanrestrictive.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b) and is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description of the Drawings, variousfeatures may be grouped together or described in a single embodiment forthe purpose of streamlining the disclosure. This disclosure is not to beinterpreted as reflecting an intention that the claimed embodimentsrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, inventive subject matter may bedirected to less than all of the features of any of the disclosedembodiments. Thus, the following claims are incorporated into theDetailed Description of the Drawings, with each claim standing on itsown as defining separately claimed subject matter.

The above disclosed subject matter is to be considered illustrative, andnot restrictive, and the appended claims are intended to cover all suchmodifications, enhancements, and other embodiments which fall within thetrue spirit and scope of the present disclosed subject matter. Thus, tothe maximum extent allowed by law, the scope of the present disclosedsubject matter is to be determined by the broadest permissibleinterpretation of the following claims and their equivalents, and shallnot be restricted or limited by the foregoing detailed description.

What is claimed is:
 1. A computer-implemented method comprising:receiving, at a server, a request from a requestor for resolving ahostname to an edge cache address associated with the hostname;comparing an address of the requestor to an anycast group to determineif the requestor is a member of the anycast group, wherein when theanycast group is in a stable network that has an existing relationshipregulating how traffic enters a network that includes the server, theexisting relationship causes requests from the anycast group to enterthe network at a same router for an extended period of time, wherein theextended period of time is over multiple requests, wherein when theanycast group is in an unstable network, the traffic enters the networkat multiple provider edge routers instead of the same router;identifying, by utilizing instructions from memory that are executed bya processor, an anycast address of a cache server for the edge cacheaddress when the requestor is the member of the anycast group; alteringa route in the network from the router to the cache server having theanycast address for requests from the anycast group; and providing theanycast address and the route in the network to the requestor inresponse to the request.
 2. The computer-implemented method of claim 1wherein the anycast group includes addresses of a content deliveryprovider controlled network and addresses of a contracted network. 3.The computer-implemented method of claim 1 further comprising:receiving, at the server, a second request for resolving the hostname tothe edge cache address associated with the hostname from a secondrequestor; comparing a second address of the second requestor to theanycast group; determining an optimal cache server when the secondaddress of the second requestor is not in the anycast group; identifyinga unicast address of the optimal cache server; and providing the unicastaddress of the optimal cache server to the second requestor in responseto the second request.
 4. The computer-implemented method of claim 3wherein determining the optimal cache server is based on the secondaddress of the second requestor.
 5. The computer-implemented method ofclaim 3 wherein determining the optimal cache server depends on anetwork distance, a network cost, an available bandwidth, and anavailable server capacity.
 6. A computer-implemented method comprising:receiving, at a server, a request from a requestor for resolving ahostname to an edge cache address associated with the hostname;comparing an address of the requestor to an anycast group to determineif the requestor is a member of the anycast group, wherein when theanycast group is in a stable network that has an existing peeringrelationship regulating how traffic from the anycast group enters acontent delivery provider controlled network, the existing peeringrelationship causes requests from the anycast group to enter the contentdelivery provider controlled network at a same router for an extendedperiod of time, wherein the extended period of time is over multiplerequests, wherein when the anycast group is in an unstable network, thetraffic enters the content delivery provider controlled network atmultiple provider edge routers instead of the same router; determining,by utilizing instructions from memory that are executed by a processor,an optimal cache server when the requestor is not the member of theanycast group; identifying a unicast address of the optimal cacheserver; and providing the unicast address of the optimal cache server tothe requestor in response to the request.
 7. The computer-implementedmethod of claim 6 wherein the anycast group includes addresses of thecontent delivery provider controlled network, addresses within thestable network, and addresses within a contracted network.
 8. Thecomputer-implemented method of claim 6 wherein determining the optimalcache server is based on the address of the requestor.
 9. Thecomputer-implemented method of claim 6 wherein determining the optimalcache server depends on a factor selected from the group consisting of anetwork distance, a network cost, an available bandwidth, an availableserver capacity, and any combination thereof.
 10. A system comprising: amemory that stores instructions; a processor that executes theinstructions to perform operations, the operations comprising: receivinga request from a requestor for resolving a hostname to an edge cacheaddress associated with the hostname; comparing an address of therequestor to an anycast group to determine if the requestor is a memberof the anycast group, wherein when the anycast group is in a stablenetwork that has an existing peering relationship regulating how trafficenters a content delivery provider controlled network associated withthe server, the existing peering relationship causes multiple requestsfrom the anycast group to enter the content delivery provider controllednetwork at a same router for an extended period of time, wherein theextended period of time is over multiple requests, wherein when theanycast group is in an unstable network, the traffic enters the contentdelivery provider controlled network at multiple provider edge routersinstead of the same router; identifying an anycast address of a cacheserver for the edge cache address when the requestor is the member ofthe anycast group; altering a route in the network from the router tothe cache server having the anycast address for requests from theanycast group; and providing the anycast address and the route in thenetwork to the requestor in response to the request.
 11. The system ofclaim 10 wherein the anycast group includes addresses within a networkselected from the group consisting of the content delivery providercontrolled network, addresses within the stable network, addresseswithin a contracted network, and any combination thereof.
 12. The systemof claim 10 wherein the operations further comprise determining anoptimal cache server and providing a unicast address of the optimalcache server when the address of the requestor is not in the anycastgroup.
 13. The system of claim 12 wherein the operations furthercomprise determining the optimal cache server based on the address ofthe requestor.
 14. The system of claim 12 wherein the operations furthercomprise determining the optimal cache server based on a factor selectedfrom the group consisting of a network distance a network cost, anavailable bandwidth, an available server capacity, and any combinationthereof.
 15. The system of claim 12 wherein the operations furthercomprise: receiving a second request from a second requestor forresolving the hostname to the edge cache address associated with thehostname; comparing a second address of the second requestor to ananycast group; determining an optimal cache server when the secondaddress of the second requestor is not in the anycast group; identifyinga unicast address of the optimal cache server; and providing the unicastaddress of the optimal cache server to the second requestor in responseto the second request.
 16. The system of claim 15 wherein operationsfurther comprise determining the optimal cache server based on thesecond address of the second requestor.
 17. The system of claim 15wherein the operations further comprise determining the optimal cacheserver based on a factor selected from the group consisting of a networkdistance a network cost, an available bandwidth, an available servercapacity, and any combination thereof.
 18. A non-transitory computerreadable medium comprising a plurality of instructions, which, whenloaded and executed by a processor, cause the processor to performoperations comprising: receiving a request from a requestor forresolving a hostname to an edge cache address associated with thehostname; comparing an address of the requestor to an anycast group todetermine if the requestor is a member of the anycast group, whereinwhen the anycast group has an existing peering relationship regulatinghow traffic enters a content delivery provider controlled networkassociated with the server, the existing peering relationship causesmultiple requests from the anycast group to enter the content deliveryprovider controlled network at a same router for an extended period oftime, wherein the extended period of time is over multiple requests,wherein when the anycast group is in an unstable network, the trafficenters the content delivery provider controlled network at multipleprovider edge routers instead of the same router; identifying an anycastaddress of a cache server for the edge cache address when the requestoris the member of the anycast group; altering a route in the network fromthe router to the cache server having the anycast address for requestsfrom the anycast group; and providing the anycast address and the routein the network to the requestor in response to the request.
 19. Thenon-transitory computer readable medium of claim 18 wherein the anycastgroup includes addresses within a network selected from the groupconsisting of the content delivery provider controlled network,addresses within the stable network, addresses within a contractednetwork, and any combination thereof.
 20. The non-transitory computerreadable medium of claim 18 determining an optimal cache server andproviding a unicast address of the optimal cache server when the addressof the requestor is not in the anycast group.
 21. The non-transitorycomputer readable medium of claim 20 wherein the operations furthercomprise determining the optimal cache server using the address of therequestor.
 22. The non-transitory computer readable medium of claim 20wherein the operations further comprise determining the optimal cacheserver by determining the optimal cache server based on a factorselected from the group consisting of a network distance, a networkcost, an available bandwidth, an available server capacity, and anycombination thereof.